package first;

import java.util.Arrays;
import java.util.Random;

/**
 * @author 长风无言
 */
public class Count {

  /**
   * description: 计算行和列的总和
   *
   * @param arr1  二维数组
   * @return void
   */

    void show(int[][] arr1){
        for(int i=0;i<16;i++) {
            System.out.println(Arrays.toString(arr1[i]));
        }
    }
/**
 * description: 计算行和列的总和
 *
 * @param arr1 二维数组
 * @return void
 */
    void countLineCol(int [][] arr1){
        // //分别存储行和列的总和
        int countLin = 0, countCol = 0;
        int i;
        for(i=0;i<16;i++) {
            for (int j = 0; j < 16; j++) {
                //计算行的总和
                countLin += arr1[i][j];
                //i和j交换位置就是计算的列的总和
                countCol += arr1[j][i];
            }
            //分别打印出当前行当前列的总和
            System.out.println("第" + (i+1) + "行总和为：" + countLin+"  第" + (i+1) +"列总和为" + countCol);
            //置零用于下一次的行求和
            countLin = 0;
            //置零用于下一次的列求和
            countCol = 0;
        }
    }
/**
 * description: 斜行列求和
 *
 * @param arr1 二维数组
 * @return void
 */
    void countDiag(int[][] arr1) {

        //左上往右下即坐标不断增大的斜行列之合
        int countUp = 0;
        //右上往左下即坐标不断减小的斜行列之合
        int countDown = 0;

        int a=0;
        while(a<16) {
            //增大斜行列横纵坐标相同
            countUp += arr1[a][a];
            //减小斜行列横纵坐标之合为15
            countDown+=arr1[15-a][a++];
        }
        System.out.println("左往右斜对角和右往左斜对角之和分别为："+countUp+";"+countDown);
    }
/**
 * description: main函数
 *
 * @param args 二维数组
 * @return void
 */
    public static void main(String[] args) {

        int [][] arr1 = new int [16][16];

        Random ran = new Random();
        Count count = new Count();

        for(int i=0;i<16;i++) {
            for(int j=0;j<16;j++) {
                //二位数组初始化为随机数字
                int num = ran.nextInt(10);
                arr1[i][j] = num;
            }
        }

        //打印二维数组
        count.show(arr1);
        //计算行列并打印
        count.countLineCol(arr1);
        //计算斜行列并打印
        count.countDiag(arr1);
    }
}
